/*
 * $Id$
 *
 * Copyright 2008 HuangHuang. All rights reserved.
 */
package com.crm.dao;

import com.crm.model.SysLog;

import java.util.List;
import java.util.Date;

/**
 * @author <a href="mailto:huang.huang@hingesoftware.com">HuangHuang</a>
 * @version $Id$
 */
public interface ISloggerDao {

    /**
     * 保存或更新一条日志信息。
     *
     * @param slog 日志实体。
     */
    void saveOrUpdate(SysLog slog);

    /**
     * 获取所有日志信息集合。
     *
     * @return 所有日志信息集合。
     */
    List getLoggers();

    /**
     * 获取指定操作的所有日志。
     *
     * @param action 指定的CRUD操作。
     * @return 返回与指定的CRUD操作匹配的所有日志记录。
     */
    List getLoggersByAction(String action);

    /**
     * 获取指定日期的所有日志。
     *
     * @param date 日期对象。
     * @return 返回指定日期的所有日志记录。
     */
    List getLoggersByDate(java.util.Date date);

    /**
     * 删除一条日志。
     *
     * @param log 日志实体。
     */
    void delete(SysLog log);

    /**
     * 获取某个时间范围的操作记录的统计数。
     *
     * @param target 操作目标. 客户信息，联系人信息，业务沟通信息
     * @param fromDate 起始日期 {@link java.util.Date}
     * @param toDate   结束日期 {@link java.util.Date}
     * @return 返回新增、修改、查询、删除的操作数统计。
     */
    List getStatistic(String target, Date fromDate, Date toDate);

}
